home *** CD-ROM | disk | FTP | other *** search
- /*
- * prototypes for TransSkel public routines
- *
- * Compiles under:
- * THINK C 7 or 8.
- * Metrowerks C 3.0 through 8.0.
- *
- * Might compile under THINK C 6 with some minor changes.
- *
- * Assumes that compiler understands nested prototypes.
- *
- * THINK C Notes:
- * You must have THINK C Language Extensions turned on in the
- * Edit/Options.../Language Settings dialog (so that the "pascal" keyword
- * is recognized, for one thing).
- *
- * for: TransSkel 3.24
- * last edit: 24 January 96
- */
-
- # ifndef __TRANSSKEL_H__
-
- # define __TRANSSKEL_H__
-
- # define skelMajorRelease 3
- # define skelMinorRelease 24
-
- /*
- * Define symbol as shorthand indicating whether PPC code is being
- * generated.
- */
-
- # ifndef skelPPC
- # if defined(powerc) || defined(__powerc)
- # define skelPPC 1
- # else
- # define skelPPC 0
- # endif
- # endif
-
- /*
- * Define skelUnivHeaders symbol indicating whether or not the universal
- * headers are being used. If they are, then UniversalProcPtr's and
- * related machinery can be used. If not, then it's necessary to define
- * compatibility macros for UPP's.
- *
- * If skelUnivHeaders isn't already defined, this fragment figures out
- * whether or not the universal headers are being used. GENERATINGPOWERPC
- * will be defined if the release 2 headers are in use. USESROUTINEDESCRIPTORS
- * will be defined if the release 1 headers are in use. If neither symbol
- * is defined, the universal headers are not being used. The value of
- * skelUnivHeaders ends up as:
- * 0 No universal headers
- * 1 Universal headers release 1
- * 2 Universal headers release 2
- *
- * skelUnivHeadersMinor is the minor release number. I'm not sure this matters
- * for release 1, so it's always set to 0. For release 2, some of the
- * prototypes changed at 2.01 in an incompatible way (e.g., for KeyTranslate())
- * so an attempt is made at defining the minor number. PRAGMA_ALIGN_SUPPORTED
- # seems to have come into existence at 2.01, so that's used as the test.
- *
- * This can be overridden by making sure skelUnivHeaders is either
- * 0, 1, or 2 before TransSkel.h is processed. If you do this, you should
- * also define skelUnivHeadersMinor to the appropriate value.
- */
-
- # ifndef skelUnivHeaders
- # ifdef GENERATINGPOWERPC /* Universal headers, release 2 */
- # define skelUnivHeaders 2
- # ifdef PRAGMA_ALIGN_SUPPORTED
- # define skelUnivHeadersMinor 1 /* minor release .01 */
- # else
- # define skelUnivHeadersMinor 0
- # endif
- # else
- # ifdef USESROUTINEDESCRIPTORS /* Universal headers, release 1 */
- # define skelUnivHeaders 1
- # define skelUnivHeadersMinor 0
- # else /* Old Apple headers */
- # define skelUnivHeaders 0
- # define skelUnivHeadersMinor 0
- # endif /* USESROUTINEDESCRIPTORS */
- # endif /* GENERATINGPOWERPC */
- # endif /* skelUnivHeaders */
-
-
- /*
- * Compatibility machinery for non-universal header compilation
- *
- * If skelUnivHeaders is 0, then the universal headers aren't available
- * and UPP types won't exist. Instead the UPP types are typedef'd below
- * to the equivalent non-universal header types. The types listed here
- * are those needed to UPP-ize parameters or return values of TransSkel
- * interface functions or structure members.
- */
-
- # if !skelUnivHeaders
-
- typedef ProcPtr UniversalProcPtr;
- typedef GrowZoneProcPtr GrowZoneUPP;
- typedef ModalFilterProcPtr ModalFilterUPP;
- typedef ModalFilterYDProcPtr ModalFilterYDUPP;
- typedef pascal void (*UserItemUPP) (DialogPtr d, short item);
-
- # define NewModalFilterProc(proc) (ModalFilterUPP)(proc)
- # define NewModalFilterYDProc(proc) (ModalFilterYDUPP)(proc)
-
- # define DisposeRoutineDescriptor(upp) /* as nothing */
-
- # endif /* !skelUnivHeaders */
-
-
- /*
- * Macro for accessing QuickDraw globals (e.g., white, arrow). Some
- * compilers can access these as white or &qd.white. Others allow only
- * &qd.white (e.g., Metrowerks), others allow only white (e.g., THINK
- * Pascal). The default is to use the qd struct. If you need the non-qd
- * form, you can supply an override definition of:
- * #define SkelQD(global) global
- * (This is how the THINK Pascal version of the library is created.)
- */
-
- # ifndef SkelQD
- # define SkelQD(global) (qd.global)
- # endif
-
-
- /* window property numbers */
-
- # define skelWPropAll 0 /* pseudo-property */
- # define skelWPropModeless 1 /* modeless dialog */
- # define skelWPropModal 2 /* modal dialog */
- # define skelWPropTool 3 /* tool window */
- # define skelWPropMovableModal 4 /* movable modal dialog */
- # define skelWPropHelp 5 /* help window */
- # define skelWPropText 6 /* text window */
- # define skelWPropDisplayWind 7 /* TransDisplay window */
- # define skelWPropEditWind 8 /* TransEdit window */
- # define skelWPropApplBase 256 /* general-use prop num base */
-
-
- /* SkelQuery() query selectors */
-
- # define skelQVersion 1 /* TransSkel version */
- # define skelQSysVersion 2 /* System software version */
- # define skelQHasWNE 3 /* whether has WaitNextEvent() */
- # define skelQMBarHeight 4 /* menu bar height */
- # define skelQHas64KROM 5 /* whether has 64K ROM */
- # define skelQHasColorQD 6 /* whether has Color QuickDraw */
- # define skelQInForeground 7 /* whether in foreground */
- # define skelQHasGestalt 8 /* whether has Gestalt() */
- # define skelQHasAppleEvents 9 /* whether has Apple Events */
- # define skelQQDVersion 10 /* QuickDraw version */
- # define skelQGrayRgn 11 /* Desktop region */
- # define skelQHasThreads 12 /* whether has Thread Manager */
-
-
- /* window property types */
-
- typedef struct SkelWindProperty SkelWindProperty, **SkelWindPropHandle;
-
- struct SkelWindProperty
- {
- short skelWPropType;
- long skelWPropData;
- SkelWindPropHandle skelWPropNext;
- };
-
-
- /*
- * Initialization parameters
- *
- * SkelResumeProcPtr is the same as ResumeProcPtr, but the latter is
- * disappearing from Apple's header files because it's not supposed
- * to be used under System 7 anymore.
- */
-
- typedef struct SkelInitParams SkelInitParams, *SkelInitParamsPtr;
- typedef pascal void (*SkelResumeProcPtr)(void);
-
- struct SkelInitParams
- {
- short skelMoreMasters;
- GrowZoneUPP skelGzProc;
- SkelResumeProcPtr skelResumeProc;
- Size skelStackAdjust;
- };
-
-
- /*
- * typedefs for pointers to various sorts of functions used by TransSkel
- * routines.
- */
-
- typedef pascal void (*SkelIdleProcPtr) (void);
- typedef pascal Boolean (*SkelEventHookProcPtr) (EventRecord *);
- typedef pascal void (*SkelSuspendResumeProcPtr) (Boolean inForeground);
- typedef pascal void (*SkelClipCvtProcPtr) (Boolean inForeground);
- typedef pascal void (*SkelAEHandlerProcPtr) (EventRecord *);
-
-
- /* ------------- */
- /* Core routines */
- /* ------------- */
-
- /* initialization/termination routines */
-
- pascal void SkelGetInitParams (SkelInitParamsPtr initParams);
- pascal void SkelInit (SkelInitParamsPtr initParams);
- pascal void SkelCleanup (void);
-
- /* event-loop-related routines */
-
- pascal void SkelEventLoop (void);
- pascal void SkelStopEventLoop (void);
- pascal void SkelRouteEvent (EventRecord *evt);
- pascal void SkelActivate (WindowPtr w, Boolean active);
- pascal void SkelClose (WindowPtr w);
- pascal EventRecord *SkelGetCurrentEvent (void);
- pascal short SkelGetModifiers (void);
- pascal void SkelSetEventMask (short mask);
- pascal short SkelGetEventMask (void);
- pascal void SkelSetDlogMask (short mask);
- pascal short SkelGetDlogMask (void);
- pascal void SkelSetIdle (SkelIdleProcPtr p);
- pascal SkelIdleProcPtr SkelGetIdle (void);
- pascal void SkelSetEventHook (SkelEventHookProcPtr p);
- pascal SkelEventHookProcPtr SkelGetEventHook (void);
- pascal void SkelSetSuspendResume (SkelSuspendResumeProcPtr p);
- pascal SkelSuspendResumeProcPtr SkelGetSuspendResume (void);
- pascal void SkelSetClipCvt (SkelClipCvtProcPtr p);
- pascal SkelClipCvtProcPtr SkelGetClipCvt (void);
- pascal void SkelSetWaitTimes (long fgTime, long bgTime);
- pascal void SkelGetWaitTimes (long *pFgTime, long *pBgTime);
- pascal void SkelSetThreadTimes (long fgTime, long bgTime);
- pascal void SkelGetThreadTimes (long *pFgTime, long *pBgTime);
-
- pascal void SkelSetAEHandler (SkelAEHandlerProcPtr p);
- pascal SkelAEHandlerProcPtr SkelGetAEHandler (void);
-
-
- /* window handling routines */
-
- typedef pascal void (*SkelWindMouseProcPtr) (Point where, long when, short modifiers);
- /*
- * Key handler needs special treatment because for prototyped functions
- * (which TransSkel uses), THINK C passes character arguments in the *high*
- * byte of a two-byte stack value. To make sure the values are passed in the
- * low byte from either C or Pascal key handlers, the first two arguments are
- * passed in shorts. In Pascal, the key procedure should
- * look like this:
- * procedure Key (c: char; code: Integer; modifiers: Integer);
- */
- typedef pascal void (*SkelWindKeyProcPtr) (short c, short code, short modifiers);
- typedef pascal void (*SkelWindUpdateProcPtr) (Boolean resized);
- typedef pascal void (*SkelWindActivateProcPtr) (Boolean active);
- typedef pascal void (*SkelWindCloseProcPtr) (void);
- typedef pascal void (*SkelWindClobberProcPtr) (void);
- typedef pascal void (*SkelWindIdleProcPtr) (void);
-
- typedef pascal void (*SkelWindSelectProcPtr) (DialogPtr dlog, short item);
-
- typedef pascal void (*SkelWindZoomProcPtr) (WindowPtr w, short zoomDir);
-
- pascal Boolean SkelWindow (WindowPtr w,
- SkelWindMouseProcPtr doMouse,
- SkelWindKeyProcPtr doKey,
- SkelWindUpdateProcPtr doUpdate,
- SkelWindActivateProcPtr doActivate,
- SkelWindCloseProcPtr doClose,
- SkelWindClobberProcPtr doClobber,
- SkelWindIdleProcPtr doIdle,
- Boolean idleFrontOnly);
- pascal Boolean SkelDialog (DialogPtr dlog,
- ModalFilterProcPtr doFilter,
- SkelWindSelectProcPtr doSelect,
- SkelWindCloseProcPtr doClose,
- SkelWindClobberProcPtr doClobber);
- pascal void SkelRmveWind (WindowPtr w);
- pascal void SkelRmveDlog (DialogPtr dlog);
- pascal Boolean SkelWindowRegistered (WindowPtr w);
- pascal Boolean SkelIsDlog (WindowPtr w);
- pascal Boolean SkelIsMMDlog (WindowPtr w);
- pascal void SkelSetGrowBounds (WindowPtr w,
- short hLo, short vLo,
- short hHi, short vHi);
- pascal void SkelSetZoom (WindowPtr w, SkelWindZoomProcPtr pZoom);
- pascal SkelWindZoomProcPtr SkelGetZoom (WindowPtr w);
- pascal Boolean SkelGetRectDevice (Rect *rp, GDHandle *gd, Rect *devRect, Boolean *isMain);
- pascal Boolean SkelGetWindowDevice (WindowPtr w, GDHandle *gd, Rect *devRect);
- pascal void SkelGetWindContentRect (WindowPtr w, Rect *rp);
- pascal void SkelGetWindStructureRect (WindowPtr w, Rect *rp);
- pascal short SkelGetWindTitleHeight (WindowPtr w);
-
- pascal Boolean SkelAddWindProp (WindowPtr w, short propType, long propData);
- pascal void SkelRmveWindProp (WindowPtr w, short propType);
- pascal SkelWindPropHandle SkelGetWindProp (WindowPtr w, short propType);
- pascal long SkelGetWindPropData (WindowPtr w, short propType);
-
-
- /* menu handling routines */
-
- typedef pascal void (*SkelMenuSelectProcPtr) (short item);
- typedef pascal void (*SkelMenuClobberProcPtr) (MenuHandle m);
- typedef pascal void (*SkelMenuHookProcPtr) (void);
-
- pascal Boolean SkelMenu (MenuHandle m,
- SkelMenuSelectProcPtr doSelect,
- SkelMenuClobberProcPtr doClobber,
- Boolean subMenu,
- Boolean drawBar);
- pascal void SkelRmveMenu (MenuHandle m);
-
- pascal void SkelSetMenuHook (SkelMenuHookProcPtr p);
- pascal SkelMenuHookProcPtr SkelGetMenuHook (void);
-
-
- /* environment information routines */
-
- pascal long SkelQuery (short selector);
- pascal Boolean SkelTrapAvailable (short theTrap);
- pascal Boolean SkelGestaltCheck (OSType selector, short featureCode);
-
-
- /* ------------------ */
- /* Auxiliary routines */
- /* ------------------ */
-
- # define skelAppleMenuID 128
-
- pascal void SkelApple (StringPtr items, SkelMenuSelectProcPtr pSelect);
-
- pascal void SkelDoEvents (short mask);
- pascal void SkelDoUpdates (void);
-
- pascal ModalFilterUPP SkelDlogFilter (ModalFilterUPP filter, Boolean doReturn);
- pascal ModalFilterYDUPP SkelDlogFilterYD (ModalFilterYDUPP filter, Boolean doReturn);
- pascal void SkelRmveDlogFilter (void);
- pascal void SkelDlogDefaultItem (short item);
- pascal void SkelDlogCancelItem (short item);
- pascal void SkelDlogTracksCursor (Boolean track);
-
- pascal Boolean SkelCmdPeriod (EventRecord *evt);
-
-
- /* -------------------- */
- /* Convenience routines */
- /* -------------------- */
-
- /* positioning types for SkelGetReferenceRect()/SkelPositionWindow() */
-
- # define skelPositionNone 0 /* leave as is */
- # define skelPositionOnMainDevice 1 /* position on main device */
- # define skelPositionOnParentWindow 2 /* position on FrontWindow() */
- # define skelPositionOnParentDevice 3 /* position on FrontWindow()'s device */
-
- pascal void SkelGetMainDeviceRect (Rect *r);
- pascal void SkelPositionRect (Rect *refRect, Rect *r, Fixed hRatio, Fixed vRatio);
- pascal void SkelGetReferenceRect (Rect *r, short positionType);
- pascal void SkelPositionWindow (WindowPtr w, short positionType, Fixed hRatio, Fixed vRatio);
- pascal Boolean SkelTestRectVisible (Rect *r);
-
- /* alert presentation routines */
-
- pascal short SkelAlert (short alrtResNum, ModalFilterUPP filter, short positionType);
- pascal void SkelSetAlertPosRatios (Fixed hRatio, Fixed vRatio);
- pascal void SkelGetAlertPosRatios (Fixed *hRatio, Fixed *vRatio);
-
- /* control manipulation routines */
-
- pascal Boolean SkelHiliteControl (ControlHandle ctrl, short hilite);
- pascal void SkelDrawButtonOutline (ControlHandle ctrl);
- pascal void SkelEraseButtonOutline (ControlHandle ctrl);
- pascal void SkelFlashButton (ControlHandle ctrl);
- pascal short SkelToggleCtlValue (ControlHandle ctrl);
-
- /* dialog item manipulation routines */
-
- pascal ControlHandle SkelGetDlogCtl (DialogPtr d, short item);
- pascal Boolean SkelSetDlogCtlHilite (DialogPtr d, short item, short hilite);
- pascal short SkelGetDlogCtlHilite (DialogPtr d, short item);
- pascal void SkelSetDlogCtlValue (DialogPtr d, short item, short value);
- pascal short SkelGetDlogCtlValue (DialogPtr d, short item);
- pascal short SkelToggleDlogCtlValue (DialogPtr d, short item);
- pascal void SkelSetDlogCtlRefCon (DialogPtr d, short item, long value);
- pascal long SkelGetDlogCtlRefCon (DialogPtr d, short item);
- pascal void SkelSetDlogStr (DialogPtr d, short item, StringPtr str);
- pascal void SkelGetDlogStr (DialogPtr d, short item, StringPtr str);
- pascal void SkelSetDlogRect (DialogPtr d, short item, Rect *r);
- pascal void SkelGetDlogRect (DialogPtr d, short item, Rect *r);
- pascal void SkelSetDlogProc (DialogPtr d, short item, UserItemUPP proc);
- pascal UserItemUPP SkelGetDlogProc (DialogPtr d, short item);
- pascal void SkelSetDlogType (DialogPtr d, short item, short type);
- pascal short SkelGetDlogType (DialogPtr d, short item);
- pascal void SkelSetDlogRadioButtonSet (DialogPtr dlog, short first, short last, short choice);
- pascal void SkelSetDlogButtonOutliner (DialogPtr d, short item);
- pascal void SkelSetDlogCursor (DialogPtr d);
- pascal Boolean SkelDlogMapKeyToButton (DialogPtr d, EventRecord *evt, short *item,
- short defaultItem, short cancelItem);
-
- pascal void SkelPause (long ticks);
-
- # endif /* __TRANSSKEL_H__ */